/**
 * Notes: 项目控制器基类
 * Ver : CCMiniCloud Framework 2.0.1 ALL RIGHTS RESERVED BY cclinux0730 (wechat)
 * Date: 2023-08-30 19:20:00
 */

// 从正确路径导入基础控制器
const BaseController = require('../../../framework/platform/controller/base_controller.js');
const timeUtil = require('../../../framework/helpers/time_util.js');

class BaseProjectController extends BaseController {

    constructor(route, openId, event) {
        super(route, openId, event);

        // 当前时间戳
        this._timestamp = timeUtil.time();

        // 项目状态定义
        this.PROJECT_STATUS = {
            PLANNING: 10,       // 规划中
            DESIGN: 20,         // 设计中
            DEVELOPMENT: 30,    // 开发中
            TESTING: 40,        // 测试中
            REVIEW: 50,         // 评审中
            COMPLETED: 60,      // 已完成
            CANCELLED: 99       // 已取消
        };

        // 活动状态定义
        this.ACTIVE_STATUS = {
            // 规划阶段
            PLAN_DRAFT: 11,            // 草稿
            PLAN_REVIEW: 12,           // 评审中
            PLAN_APPROVED: 13,         // 已批准

            // 设计阶段
            DESIGN_DRAFT: 21,          // 草稿
            DESIGN_REVIEW: 22,         // 评审中
            DESIGN_APPROVED: 23,       // 已批准

            // 开发阶段
            DEV_ONGOING: 31,           // 进行中
            DEV_REVIEW: 32,            // 评审中
            DEV_COMPLETED: 33,         // 已完成

            // 测试阶段
            TEST_ONGOING: 41,          // 进行中
            TEST_FAILED: 42,           // 未通过
            TEST_PASSED: 43,           // 已通过

            // 评审阶段
            REVIEW_ONGOING: 51,        // 进行中
            REVIEW_FAILED: 52,         // 未通过
            REVIEW_PASSED: 53,         // 已通过

            // 完成阶段
            COMPLETED: 60              // 已完成
        };

        // 资源类型定义
        this.RESOURCE_TYPE = {
            DOCUMENT: 1,       // 文档
            CODE: 2,           // 代码
            IMAGE: 3,          // 图片
            VIDEO: 4,          // 视频
            OTHER: 99          // 其他
        };
    }
    
    /**
     * 初始化设置
     * 覆盖父类方法
     */
    initSetup() {
        console.log('[BaseProjectController] initSetup called');
        // 可以在这里进行PLM项目特定的初始化
        return true;
    }

    /**
     * 获取项目状态名称
     * @param {number} status 项目状态码
     */
    getStatusName(status) {
        switch (status) {
            case this.PROJECT_STATUS.PLANNING:
                return '规划中';
            case this.PROJECT_STATUS.DESIGN:
                return '设计中';
            case this.PROJECT_STATUS.DEVELOPMENT:
                return '开发中';
            case this.PROJECT_STATUS.TESTING:
                return '测试中';
            case this.PROJECT_STATUS.REVIEW:
                return '评审中';
            case this.PROJECT_STATUS.COMPLETED:
                return '已完成';
            case this.PROJECT_STATUS.CANCELLED:
                return '已取消';
            default:
                return '未知状态';
        }
    }

    /**
     * 获取项目活动状态名称
     * @param {number} activeStatus 活动状态码
     */
    getActiveStatusName(activeStatus) {
        switch (activeStatus) {
            case this.ACTIVE_STATUS.PLAN_DRAFT:
                return '规划-草稿';
            case this.ACTIVE_STATUS.PLAN_REVIEW:
                return '规划-评审中';
            case this.ACTIVE_STATUS.PLAN_APPROVED:
                return '规划-已批准';
            case this.ACTIVE_STATUS.DESIGN_DRAFT:
                return '设计-草稿';
            case this.ACTIVE_STATUS.DESIGN_REVIEW:
                return '设计-评审中';
            case this.ACTIVE_STATUS.DESIGN_APPROVED:
                return '设计-已批准';
            case this.ACTIVE_STATUS.DEV_ONGOING:
                return '开发-进行中';
            case this.ACTIVE_STATUS.DEV_REVIEW:
                return '开发-评审中';
            case this.ACTIVE_STATUS.DEV_COMPLETED:
                return '开发-已完成';
            case this.ACTIVE_STATUS.TEST_ONGOING:
                return '测试-进行中';
            case this.ACTIVE_STATUS.TEST_FAILED:
                return '测试-未通过';
            case this.ACTIVE_STATUS.TEST_PASSED:
                return '测试-已通过';
            case this.ACTIVE_STATUS.REVIEW_ONGOING:
                return '评审-进行中';
            case this.ACTIVE_STATUS.REVIEW_FAILED:
                return '评审-未通过';
            case this.ACTIVE_STATUS.REVIEW_PASSED:
                return '评审-已通过';
            case this.ACTIVE_STATUS.COMPLETED:
                return '已完成';
            default:
                return '未知活动状态';
        }
    }

    /**
     * 获取资源类型名称
     * @param {number} type 资源类型码
     */
    getResourceTypeName(type) {
        switch (type) {
            case this.RESOURCE_TYPE.DOCUMENT:
                return '文档';
            case this.RESOURCE_TYPE.CODE:
                return '代码';
            case this.RESOURCE_TYPE.IMAGE:
                return '图片';
            case this.RESOURCE_TYPE.VIDEO:
                return '视频';
            case this.RESOURCE_TYPE.OTHER:
                return '其他';
            default:
                return '未知类型';
        }
    }
}

module.exports = BaseProjectController; 